x86: recover pat value for bsp after S3 resume.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 5 Feb 2009 12:14:09 +0000 (12:14 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 5 Feb 2009 12:14:09 +0000 (12:14 +0000)
host pat is set to cover all memory types by Xen, which is
necessary to support guest mtrr/pat, especially when device
is passthroughed with VT-d. However pat on bsp is not=20
recovered which could make assigned device defunct after S3
resume

Signed-off-by Kevin Tian <kevin.tian@intel.com>

xen/arch/x86/acpi/suspend.c
xen/include/asm-x86/processor.h

index 3068590f70d20b365d8b5bafeb8ce3d57f9ccba6..e8a39fc6bcfea76bd23e858cb7190573eb450418 100644 (file)
@@ -65,6 +65,9 @@ void restore_rest_processor_state(void)
     /* Reload FPU state on next FPU use. */
     stts();
 
+    if (cpu_has_pat)
+        wrmsrl(MSR_IA32_CR_PAT, host_pat);
+
     mtrr_ap_init();
     mcheck_init(&boot_cpu_data);
 }
index d9af37aba204ee9220edde4bc6ba5550c3c3aea7..996734d2858bf87f4fb8a0f66f86d9f6abc0d0f1 100644 (file)
@@ -188,6 +188,7 @@ extern struct cpuinfo_x86 cpu_data[];
 #define current_cpu_data boot_cpu_data
 #endif
 
+extern u64 host_pat;
 extern int phys_proc_id[NR_CPUS];
 extern int cpu_core_id[NR_CPUS];